/**
 * RegExp存放正则表达式
 * @type {{}}
 */
/***************************  正则表达式库  ****************************************/
const RegList = {};
// 请输入1-16位的数字，多组以 ','和'-'分隔
RegList["reg1"] = { regName: /^(\d{1,16}[\,|\-]{1})*\d{1,16}$/, tips:"tips0001"};
// 请输入字母数字和下划线
RegList["reg2"] = { regName: /^[a-zA-Z0-9_]+$/, tips:"tips0002"};
// 仅限半角数字、仅限半角字母、下划线组成，必须含有字母
RegList["reg3"] = { regName: /\w*[A-Za-z]+\w*/, tips:"tips0003"};
// 仅限半角数字、半角字母，必须含有字母。
RegList["reg4"] = { regName: /[A-Za-z0-9]*[A-Za-z]+[A-Za-z0-9]*/, tips:"tips0004"};
// 请输入大于0的整数。
RegList["reg5"] = { regName: /^[1-9]+[0-9]*$/, tips:"tips0005" };
// 请输入英文字母。
RegList["reg6"] = { regName: /^[A-Za-z]*$/ , tips:"tips0006"};
// 请输入大小写字母或数字。
RegList["reg7"] = { regName: /^[0-9A-Za-z]*$/, tips:"tips0007"};
// 请输入大小写字母、数字，可包含.和空格。
RegList["reg8"] = { regName: /^[A-Za-z0-9. ]+$/, tips:"tips0008"};
// 请输入日期，格式为：yyyy/mm/dd
RegList["reg9"] = { regName: /^\d{4}[\/]([0][1-9]|(1[0-2]))[\/](0[1-9]|([012]\d)|(3[01]))$/, tips:"tips0009" };
// 请输入有效的Email地址
RegList["reg10"] = { regName: /^\S+@\S+$/, tips:"tips0010" };
// 请输入电话号码，允许-
RegList["reg11"] = { regName: /^\d+([ \-]\d+)*$/ ,tips:"tips0011"};
// 用户名只能输入字母数字和下划线
RegList["reg12"] = { regName: /^[a-zA-Z0-9_]+$/ ,tips:"tips0012"};
// 判断是否属于空间上传图片时，fileId做为的路径
RegList["reg13"] = { regName: /([a-z0-9A-Z]){8}-([a-z0-9A-Z]){4}-([a-z0-9A-Z]){4}-([a-z0-9A-Z]){4}-([a-z0-9A-Z]){12}.([a-zA-Z])+/ ,tips:"tips0013"};


export default class Regular {
    constructor(_name){
        this.regObj = RegList[_name];
    }

    /**
     * 获取所有的正则列表对象
     */
    getAll(){
        return RegList;
    }

    /**
     * 获取正则表达式值
     */
    getReg(_name){
        // 如果_name不存在，返回new对象时的正则对象
        if ( _name === null || _name === undefined ){
            return this.regObj.regName;
        }
        return RegList[_name].regName;
    };

    /**
     * 获取正则表达式所在对象，包含正则表达式值和提示信息
     * @param _name
     * @returns {*}
     */
    getRegObj(_name){
        // 如果_name不存在，返回new对象时的正则对象
        if ( _name === null || _name === undefined ){
            return this.regObj;
        }
        return RegList[_name];
    };
    /**
     * 校验
     */
    test(_param) {
        if (this.regObj === null || this.regObj === undefined) return false;
        // 创建正则表达式对象
        let _re = new RegExp(this.regObj.regName);
        // 返回是否校验通过
        return _re.test(_param);
    }
}